Software Engineering Project 1 - 4010-561-14.20082 : Project Plan
This page last changed on Apr 03, 2009 by pwy4104.
OverviewXerox uses Confluence Wiki to help organize their project related communications and information artifacts. They use Bob Swift's SQL plugin to embed external database information in wiki pages as well as generating data for charting on the wiki. Currently developers use a separate tool to manipulate the database tables and views. They would like the plugin to allow them to edit, insert, and delete database information through wiki pages. Xerox has asked us to develop an extension for the plugin which would provide them with the basic functionality to perform row operations on queries that are embedded in wiki pages. Time permitting the project might include multi-row operations, advanced data type support, and table scrolling. Another major feature, time permitting, is user-specific database sessions. Currently the plugin uses a single identity provided in a configuration file when performing database operations. The user-specific sessions would allow the plugin to connect the user's identity with the operations they perform. The extension to the plugin will be written in Java. It is intended to work with MySQL and Oracle 10g database servers. It must work in both Internet Explorer and Firefox browsers on Windows XP and Firefox on Solaris. This project will take place over a 20 week development period in which incremental deliverables are expected by the customer. Utilizing a combination of XP and Scrum methodologies a maximum of 2 week sprints will be used to deliver each release. Frequent communication and stakeholder accessibility will be paramount in running successful sprints and allowing for quick response to project issues. Roles and responsibilities within the team will be assigned and rotate throughout the duration of the project. For each sprint a Administrator, Tech Lead, Configuration Management Lead, and Test Lead will be chosen. There will also be a Scrum Master that will rotate every five weeks throughout the project. The responsibilities of the Scrum Master include running the daily scrum meetings (15 minute long meetings to communicate status and impediments), work with the product owners to further refine requirements and help remove any impediments the team has. The Scrum Master will also be accountable for updating story point burn-down charts and tracking metrics throughout the sprint as well as updating the team time sheets. Since we will be using test-driven development, team members will be responsible for writing tests but a team member will be chosen to oversee testing efforts and to ensure that quality tests are been written. The test lead will use the selected metrics below to track and monitor testing coverage and pass/fail rates. The configuration management lead will be chosen for each sprint and will be tasked with maintaining the VM environment, ensuring CVS is properly configured and used, as well as maintaining the project wiki. The tech lead will also be chosen for each sprint and will be responsible for addressing technical issues, enforcing XP engineering practices and documenting design/implementation work through the sprint on the team wiki. The senior project team will be responsible for choosing which user stories will be implemented in each sprint based on priority (determined by the Product Owner), as well as story size and velocity (determined by the team). Team Wirox will also be required to track progress as well as keep time cards of weekly tasks and achievements. Goals and scopeThe primary goal of this project is to produce a SQL plugin that will both satisfy the needs of Xerox and have the opportunity to be merged into Bob Swift's existing SQL plugin. This will be the first project in which Team Wirox will be required to exercise the full development lifecycle and it is a goal to gain knowledge of both the software lifecycle and the related practices in the XP/Scrum methodologies. It is also important to enhance the Xerox/RIT relationship through a successful senior project. The scope of this project includes the extension of the existing SQL Plugin by Bob Swift to enable the manipulation of database information. This consists of inserting, updating and deleting from the databases that are accessed through the Confluence Wiki. The datatypes that will be supported will be: varchar2, number, integer, decimal, float, precision, dates and possibly timestamps. Single row transactions are required but with desirable functionality for multiple row transactions. The plugin will be required to distinguish between users that may edit or simply view database information. Team Wirox will not be responsible for handling existing bugs in the current SQL Plugin for Confluence Wiki. Datatypes other than those mentioned above will not be explicitly supported. no currency. Deliverables
Risk ManagementWirox will be using a risk register to track and manage risk events throughout our project. Risk events refer to specific, uncertain events that may occur to the detriment (or enhancement) of the project. A risk register (provided below) will be used to document potential risk events and related information. The name and description of the risk are listed in the table in addition to the root cause of the risk, triggers for the risk (indicators or symptoms of actual risk events), potential responses to each risk, and the person who will own or take responsibility for the risk. The probability of the risk occurring and the impact (in hours) of the risk event are also listed and used to prioritize the risk events (adapted from Information Technology Project Management, Fifth Edition by Kathy Schwalbe).
SchedulingThe project will be tracked using our team's wiki as a communication tool. Specifically using story point burn down charts which will track story points completed over time and hours burn up chart which tracks time spent. Charting will be done using the wiki's built in charting macro. Project work will be divided into sprints. Each sprint will last 2 weeks.The goals for each sprint will be determined collaboratively with the product owners at the start of each sprint during a sprint planning meeting, taking into account the metrics generated in the previous sprint. These meetings will be done either in person or through use of teleconferencing technology. Planning will take into account what features have been implemented in previous releases, any additional features and feedback from the Product Owner based on the overall progress. The outcome of planning meetings is a sprint backlog based on team estimates for highest priority items. We will hold sprint review meetings to give demonstrations of progress to the Product Owner at the end of each sprint. The following sections give the currently known work breakdown and status of user stories. Work Breakdown Structure and Gantt Chart
Estimation TechniquesWe will be using XP/Scrum agile estimation techniques based on "Agile Estimating and Planning" by Mike Cohn which are outlined below. Velocity-Driven Sprint Planning![]() Adjust PrioritiesThe features implemented for each sprint will be pulled from the product backlog, a list of user stories/features prioritized by the product owner. Sprint review meetings will be held at the end of each sprint. During these reviews, new functionality and capabilities that were added during the sprint are demonstrated to stakeholders and feedback is received. The product backlog will be reviewed and priorities adjusted if necessary. Determine Target VelocityWhen possible, historical values for the target velocity will be used. For example, the target velocity for the next sprint will be set to the average velocity of the previous sprint. In the case that there are significant technology changes, the historical velocity value will be used along with a observed velocities in technology spikes and a velocity forecast. Velocity forecasts will be determined by:
Identify Sprint GoalA goal will be determined that succinctly describes what we would like to accomplish as a team during the sprint. For example "All X features are finished" or "make progress on X". The sprint goal will be a unifying statement about what will be accomplished during the iteration and does not have to be very specific. Select User StoriesWirox will then meet with the product owner(s) to select stories that combine to meet the sprint goal. This selection process will be driven by the priority of each story. For example, a user story related to the goal that has a very low priority may not be included in the iteration. The selected stories will be marked for the sprint on the product backlog page. Split Stories Into TasksNext, Team Wirox will decompose each user story into the tasks necessary to deliver the new functionality for that story. This will include:
Estimate TasksTask estimates will be expressed in terms of ideal time. Tasks should be created with an approximate size so that each developer is able to finish an average of one per day. Large tasks greater than a day will be refined into smaller ones. Planning poker and Wide Band Delphi techniques will be used to estimate the size of user stories. Measurements & MetricsAt the planning meeting for each release the team will discuss which metrics are most appropriate to capture for the up-coming work. In addition to the time-tracking sheets that are maintained for Senior Project, there are several other measurements that will be chosen from. The primary use of the measurements are to aid in averting risk to help determine progress through a release. Velocity - This is a measurement of how fast work is been completed. It is determined by the story points of completed user stories divided by the length of each sprint. This will be used during the planning stages of future sprints to determine the which and how many user stories will be targeted for the next release. LOC - Overall Lines of Code (LOC) will be compiled for the project before and after each user story. This will be used to aid in estimations for future user story size and track the growth of the project. User Story Status/Impediments - We will record user stories and their associated status and current impediments in a table. This will be used in order to keep track of associated risks, track progress, track overall impediments and associate task ownership for a given user story. Test Pass/Fail - Test related information will be recorded in order to track project health. In our methodology, having and passing tests is how user story completion is determined. Code coverage information will be generated by running unit tests. Time/Activity Tracking - Time/Activity tracking will be used to determine day to day activities and sprint process. Besides being part of the RIT senior project requirements this measurement will contribute to the daily burn-up chart (described below). Burn-up Chart - This chart will map total spent time relative to the total estimated time for a sprint. This chart will be updated daily. This measurement can help make sure estimates are on track and validate estimations for a sprint. Burn-down Chart - This chart will map remaining story points to be implemented in the sprint against the estimated total. This will give a visualization for how much remains to be completed for the sprint as well as determine if goals are still on target. It will be updated at daily scrum meetings by the scrum master. Technical ProcessThe team will adopt a combination of XP and Scrum methodologies that will make up the technical process that will be used. For development activities the team will use most XP practices for planning, designing, coding and testing. The practice of no overtime, constant customer availability and starting each day with stand up meetings are not applicable to the senior project as a result of other obligations and restrictions. Scrum practices that will be adopted will consist of the use of a product backlog for release planning and progress tracking and in conjunction XP stand up meetings will be used to communicate individuals project activities and any impediments. Timothy Luksha will be the primary product owner (Peter Alfvin may also fill this role) and will be used throughout for requirements elicitation and user story prioritization. |
![]() |
Document generated by Confluence on May 21, 2009 10:23 |